#===istalismanplugin===
# -*- coding: utf-8 -*-

# $Revision: 61 $
# $Author: lytors@gmail.com $
# $Date: 2013-12-20 06:59:04 +0000 (Fri, 20 Dec 2013) $

#---------------------------------------------------------------------------------------------------

# Плагин дурнистика 20 мая 2011 г -=G@D=-

# Ты живешь:  (http://allcalc.ru/node/56)
# Лет
# Дней
# Часов
# Минут
# Секунд

# Сон
# Спал часов
# Спал секунд

# Моргнул
# Примерно раз

# Твое сердце
# Перекачало литров крови
# Сделало ударов

# Воды
# выпил литров воды
# Пил часов

# Волосы
# Вырасло на голове сантиметров
# Выпало штук
# Все волосы километров

#print time.strptime("16/6/1981", "%d/%m/%Y") 
#(1981, 6, 16, 0, 0, 0, 1, 167, -1)

#---------------------------------------------------------------------------------------------------

import time     # Старый низкоуровневый модуль 
import datetime # Новый модуль для работы с датой и временем

#---------------------------------------------------------------------------------------------------

p = 'private' # для отсылки сообщений в приват

#---------------------------------------------------------------------------------------------------

def durka_otvet (t, source, b):
        if not b:
                reply(p,source,u'Укажите дату вашего рождения в формате\n житие д м гггг (указывать следует через пробел)')
                return
        elif b:
                now_date = datetime.date.today()
                splitdata = b.strip().split()
                if not len(splitdata)==3:
                        reply(p,source,u'Ошибка! Возможно Вы не указали (день, месяц или год)')
                        return
                # Проверяем день
                try:
                        splitdata[0] =  int(splitdata[0])
                except:
                        reply(p, source, u'День должен быть написан числом, повторите ввод.')
                        return
                
                # Проверяем месяц
                try:
                        splitdata[1] =  int(splitdata[1])
                except:
                        reply(p, source, u'Месяц должен быть написан числом, повторите ввод.')
                        return

                # Проверяем год
                try:
                        splitdata[2] =  int(splitdata[2])
                except:
                        reply(p, source, u'Год должен быть написан числом, повторите ввод.')
                        return

                # формируем защиту от дураков
                if splitdata[2] < 1945:
                      reply(p, source, u'Администрация бота с большим Уважением относится к ветеранам ВОВ, но данная программа не расчитана на расчет такого года')
                      return
                elif splitdata[2] > now_date.year:
                      reply(p, source, u'Алиса-a-a-a, милофон у меня!!!\nЯ так понимаю Вы из будущего ;)')
                      return
                if splitdata[1] in [1,2,3,4,5,6,7,8,9,10,11,12]:
                        if splitdata[0] > 31:
                                reply(p, source, u'Ошибка, в месяце максимум 31 день, повторите ввод.')
                                return
                        if splitdata[1] in [4,6,8,10,12]:
                                if splitdata[0] > 30:
                                        reply(p, source, u'Ошибка, в указанном месяце максимум 30 день, повторите ввод.')
                                        return
                        elif splitdata[1] == 2:
                                if splitdata[0] > 29:
                                        reply(p, source, u'Ошибка, в феврале максимум 29 деней, повторите ввод.')
                                        return
                else:
                       reply(p, source, u'Ошибка, неверно указан месяц, повторите ввод.')
                       return


                # Расчет жизни
                data_zhizni   = datetime.date(splitdata[2],splitdata[1],splitdata[0])
                let_zhizni    = now_date.year-splitdata[2]   # Получаем кол-во лет    жизни
                dnej_zhizni   = datetime.date.today()-data_zhizni
                dnej_zhizni   = dnej_zhizni.days             # Получаем кол-во дней   жизни
                chasov_zhizni = dnej_zhizni*24               # Получаем кол-во часов  жизни  (Приблизительно)   
                minut_zhizni  = chasov_zhizni*60             # Получаем кол-во минут  жизни  (Приблизительно)
                sekund_zhizni = minut_zhizni*60              # получаем кол-во секунд жизни  (Приблизительно)
                if now_date.month<splitdata[1]:
                      let_zhizni-=1  
                # Сон
                son_minut = dnej_zhizni*480
                son_sek   = son_minut*60

                # Моргание
                morgnul = minut_zhizni*25
                zakr_glaza = let_zhizni*21.5

                # Сердце
                perekachka = minut_zhizni*5
                udarov     = minut_zhizni*60

                # Вода
                vipil = dnej_zhizni*2

                # Волосы
                rost_volos = dnej_zhizni*0.2
                vipalo     = dnej_zhizni*105
                dl_vol     = dnej_zhizni*0.04

                # Выдиления
                pot = dnej_zhizni*0.5
                mocha = dnej_zhizni*1.2
                slyuna = dnej_zhizni*2.3

                OUT  = u'Информация:'
                OUT1 = u'\nВам %s лет или %s дн., или %s час., или %s мин., или %s сек.' % (let_zhizni, dnej_zhizni, chasov_zhizni, minut_zhizni, sekund_zhizni)
                OUT2 = u'\nВы проспали %s мин. или %s сек.' % (son_minut,son_sek)
                OUT3 = u'\nВы моргнули %s раз, при этом ваши глаза были закрыты %s дней.' % (morgnul,zakr_glaza)
                OUT4 = u'\nВаше сердце перекачало %s л. крови, сделав %s ударов.' % (perekachka,udarov)
                OUT5 = u'\nВы выпили %s литров воды' % (vipil)
                OUT6 = u'\nУ Вас бы уже могли быть волосы длиной %sсм.\nВы потеряли %s шт. волос.\nОбщая длина Ваших волос равна %sкм.' % (rost_volos,vipalo,dl_vol)
                OUT7 = u'\nВы выделили: %s л. пота; %s л. мочи; %s л. слюны.' % (pot,mocha,slyuna)
                reply(p, source, OUT+OUT1+OUT2+OUT3+OUT4+OUT5+OUT6+OUT7)
                
#---------------------------------------------------------------------------------------------------

register_command_handler(durka_otvet, 'житие', ['мук','все'], 10, 'Расчет Вашей жизни\nЗадумка и воплащение: -=G@D=- 2011г.', 'житие <д> <м> <гггг>', [ 'житие 1 2 1980'])

#---------------------------------------------------------------------------------------------------

# now_date = datetime.date.today()              # Текущая дата (без времени)
# now_time = datetime.datetime.now()            # Текущая дата со временем 

# cur_year = now_date.year                      # Год текущий
# cur_month = now_date.month                    # Месяц текущий
# cur_day = now_date.day                        # День текущий
# cur_hour = now_time.hour                      # Час текущий
# cur_minute = now_time.minute                  # Минута текущая
# cur_second = now_time.second                  # Секунда текущие
# num_week = now_date.isoweekday()              # узнаем номер недели (от 1 до 7)

# now_date = now_date.replace(2011,6,30)        # меняем полностью дату на 30.06.2011
# now_date = now_date.replace(day=cur_day)      # меняем только день
# now_date = now_date.replace(month=cur_month)  # меняем только месяц
# now_date = now_date.replace(year=cur_year)    # меняем только год

# ny_2011 = datetime.date(2011,2,1)             # создали дату: 1 февраля 2011 года
# delta = ny_2011 - now_date                    # разница (дельта) в между 2-мя датами

# delta = datetime.timedelta(days=2)            # дельта в 2 дня
# now_date = now_date + delta                   # Узнаем какое число будет через 2 дня
# now_date = now_date - delta                   # или какое число было 2 дня назад

# print(now_time.strftime("%d.%m.%Y %I:%M %p")) # форматируем дату

#---------------------------------------------------------------------------------------------------